AWS BackupのイベントとメトリクスがCloudWatchで利用可能になったので検証してみた
どーもsutoです。
2021年2月3日にCloudWatchにAWS Backupメトリクスとイベントが使えるようになったとのことで実際に確認してみました。
これまではAWS BackupのSNSトピックを使って通知を行うには、下記リンクのように
- AWS CLI を使用してBackupイベントの通知をVaultに設定
- バックアップJobのstateで通知の有無をフィルタリングする場合は、SNSのサブスクリプションフィルターポリシーの設定
が必要でした。
今後はAWSコンソールでもCloudWatchイベントやアラーム作成ができるので通知設定の手間が解消されそうですね。
参考
AWS Backupで利用できるイベント、メトリクスの種類はこちらでご確認ください。
実際にやってみた
今回は、検証として以下の設定を行い、メトリクスと通知の確認をしてみます。
- AWS Backup設定を作成(Cfnテンプレートを使用)、EC2のバックアップ取得
- CloudWatchイベントでJobのstate変化時にSNSトピックに通知
Backup設定の作成
以下のテンプレートを用いてAWS BackupのVault、Plan、Rule、Resource、必要なIAMロールを設定します。
AWSTemplateFormatVersion: '2010-09-09' Description: AWS Backup Setting Parameters: MyBackupName: Description: Backup plan name Type: String Default: 'backup' Cron: Description: type the cron. Type: String Default: cron(0 19 * * ? *) TagKey: Description: TagKey for backup Type: String Default: 'backup' TagValue: Description: TagValue for backup Type: String Default: 'True' Resources: BackupVault: Type: "AWS::Backup::BackupVault" Properties: BackupVaultName: !Sub ${MyBackupName}-vault BackupPlan: Type: AWS::Backup::BackupPlan Properties: BackupPlan: BackupPlanName: !Ref MyBackupName BackupPlanRule: - RuleName: !Sub ${MyBackupName}-rule TargetBackupVault: !Ref BackupVault ScheduleExpression: !Ref Cron CompletionWindowMinutes: 720 StartWindowMinutes: 60 Lifecycle: DeleteAfterDays: 14 BackupSelection: Type: AWS::Backup::BackupSelection Properties: BackupPlanId: !Ref BackupPlan BackupSelection: SelectionName: !Ref MyBackupName IamRoleArn: !GetAtt BackupIAMrole.Arn ListOfTags: - ConditionType: "STRINGEQUALS" ConditionKey: !Ref TagKey ConditionValue: !Ref TagValue BackupIAMrole: Type: AWS::IAM::Role Properties: RoleName: AWSBackupDefaultServiceRole AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: sts:AssumeRole Principal: Service: backup.amazonaws.com ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForBackup - arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForRestores Path: "/service-role/"
あとはバックアップ対象のEC2に上記のタグ(backup : True)を付与します。
CloudWatchイベントの作成
コンソールでCloudWatch→イベント→ルールの画面を開き、以下のようにルールを作成してみます。ターゲットにはあらかじめ自分のメールをサブスクリプションに設定したSNSトピックを指定しています。
これで設定完了です。ではメールの内容を見てみましょう。
ジョブのstate「CREATED」「RUNNING」「COMPLETED」の計3通がメールで受信されていました。
次にCloudWatchメトリクスを確認してみます。
通知された3つのstate変化がメトリクスでも取得されています。
特定のジョブstateのみを通知させるために
運用業務の場面では、「Failedのときのみ通知させたい」というような需要があるかと思いますので、今回はジョブが”COMPLETED”のイベントのみを通知させるようにCloudWatchイベントルールを変更してみようと思います。
先ほど作成したルールを選択し、カスタムイベントパターンとして以下のように編集を行い保存します。
このように”detail”のstateに条件を加えることで、COMPLETEDのときのみ通知がくるようになりました。
他の条件についても、メール本文内のjsonにある「"Key":"Value"」で複数のフィルタリングができます。
まとめ
バックアップ設定が正常に動作しているか監視するのにCloudWatchのメトリクスやイベントを使えるようになったのはありがたいですね。 監視や運用保守の業務の方々に参考になれば幸いです。